home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / reef / code.lua next >
Text File  |  2005-07-16  |  10KB  |  277 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local function prog_init()
  6.     initModels()
  7.     sound_playMusic("music/rybky05.ogg")
  8.     local pokus = getRestartCount()
  9.  
  10.  
  11.     -- -------------------------------------------------------------
  12.     local function prog_init_room()
  13.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  14.  
  15.         if pokus < 3 then
  16.             room.mzaval = 0
  17.         elseif random(pokus) < 4 then
  18.             room.mzaval = 0
  19.         else
  20.             room.mzaval = 1
  21.         end
  22.         room.vzaval = 0
  23.         room.nezvladnu = 0
  24.         room.lastu = 0
  25.         room.matr = 0
  26.         room.rozhovor = 500 + random(500 + pokus * 42)
  27.         room.snm = 0
  28.         room.nezv = 0
  29.         room.uz = 0
  30.         if random(pokus + 1) > 3 then
  31.             room.chud = 1
  32.         else
  33.             room.chud = 0
  34.         end
  35.         room.vymena = 0
  36.         room.pomv = 0
  37.  
  38.         return function()
  39.             if no_dialog() then
  40.                 if isReady(small) and isReady(big) then
  41.                     if room.mzaval == 0 and small.X > 43 and not small:isLeft() then
  42.                         if random(game_getCycles()) < 100 then
  43.                             addm(4, "uts-m-otresy")
  44.                         end
  45.                         room.mzaval = 1
  46.                     end
  47.                     if room.vzaval == 0 and big.X > 43 and not big:isLeft() then
  48.                         if random(3 + pokus) < 4 then
  49.                             addv(2, "uts-v-projet0")
  50.                         else
  51.                             addv(2, "uts-v-projet1")
  52.                         end
  53.                         room.vzaval = 1
  54.                         room.mzaval = 1
  55.                     end
  56.                     if room.lastu == 0 and big.X < 7 and lastura.X < 3 and lastura.Y == 11 then
  57.                         room.lastu = 1
  58.                         addm(11, "uts-m-lastura")
  59.                     end
  60.                     if room.rozhovor <= game_getCycles() then
  61.                         room.rozhovor = room.rozhovor + 6666 + random(pokus * 42)
  62.                         addv(10, "uts-v-koraly")
  63.                         if pokus < 4 or random(6) > 0 then
  64.                             addm(10, "uts-m-tvorove")
  65.                         end
  66.                         if pokus == 1 or random(4) > 0 then
  67.                             addv(10, "uts-v-mikroskop")
  68.                             addm(10, "uts-m-zivocich")
  69.                             if random(3) > 0 then
  70.                                 addm(10, "uts-m-zelvy")
  71.                             end
  72.                             if random(3) > 0 then
  73.                                 addm(10, "uts-m-batyskaf")
  74.                             end
  75.                         end
  76.                     end
  77.                     if room.snm == 0 and matrace.X == 37 and (snek1.X > 40 and snek1.Y == 6 or snek2.X > 40 and snek2.Y == 6) then
  78.                         room.snm = 1
  79.                         addm(0, "uts-m-snek")
  80.                     end
  81.                     if room.nezv == 0 and (snek1.Y == 13 or snek2.Y == 13) then
  82.                         room.nezv = 1
  83.                         addm(2, "uts-m-nezvedneme")
  84.                     end
  85.                     if room.uz == 0 and (dvere.X > snek1.X or dvere.X > snek2.X) and dvere.Y == 10 then
  86.                         room.uz = 1
  87.                         addv(6, "uts-v-konecne")
  88.                         if random(pokus + room.chud * 6) < 4 then
  89.                             addm(7, "uts-m-chudak")
  90.                         end
  91.                         room.chud = 1
  92.                     end
  93.                     if room.chud == 0 and (snek1.dir ~= dir_no or snek2.dir ~= dir_no) and random(100) == 1 then
  94.                         room.chud = 1
  95.                         addm(5, "uts-m-chudak")
  96.                     end
  97.                     if room.vymena == 0 and matrace.X > 15 and matrace.X < 21 and xdist(matrace, snek1) == 0 and xdist(matrace, snek2) == 0 then
  98.                         pomb1 = snek1.Y + 1 == snek2.Y and snek2.Y + 1 == matrace.Y
  99.                         pomb2 = snek2.Y + 1 == snek1.Y and snek1.Y + 1 == matrace.Y
  100.                         if pomb1 or pomb2 then
  101.                             if room.pomv == 0 then
  102.                                 room.pomv = 1
  103.                                 room.vymena = 20 + random(300 + pokus)
  104.                             else
  105.                                 room.pomv = 2
  106.                             end
  107.                         end
  108.                     end
  109.                     if room.pomv == 2 then
  110.                         room.vymena = -1
  111.                         room.pomv = 0
  112.                         addv(5, "uts-v-poradi")
  113.                     end
  114.                 end
  115.                 if room.vymena > 0 then
  116.                     room.vymena = room.vymena - 1
  117.                 end
  118.                 if room.matr == 0 and isReady(small) and dist(small, matrace) < 2 then
  119.                     room.matr = 1
  120.                     addm(7, "uts-m-matrace")
  121.                 end
  122.                 if room.nezvladnu == 0 and small:isOut() and isReady(big) and lastura.X == 11 then
  123.                     room.nezvladnu = 1
  124.                     addv(20, "uts-v-sam")
  125.                 end
  126.             end
  127.         end
  128.     end
  129.  
  130.     -- -------------------------------------------------------------
  131.     local function prog_init_lastura()
  132.         return function()
  133.             local anim_table = {
  134.                 [0] = function()
  135.                     if random(100) == 1 then
  136.                         lastura.afaze = 1
  137.                     end
  138.                 end,
  139.                 [1] = function() 
  140.                     if random(10) == 1 then
  141.                         lastura.afaze = random(5)
  142.                     end
  143.                 end,
  144.                 [5] = function()
  145.                     lastura.afaze = 4
  146.                 end,
  147.                 [6] = function()
  148.                     if random(10) == 1 then
  149.                         lastura.afaze = random(2) + 2
  150.                     end
  151.                 end,
  152.             }
  153.             anim_table[2] = anim_table[1]
  154.             anim_table[3] = anim_table[1]
  155.             anim_table[4] = anim_table[1]
  156.  
  157.             switch(lastura.afaze)(anim_table)
  158.  
  159.             switch(lastura.dir){
  160.                 [dir_up] = function()
  161.                     lastura.afaze = 5
  162.                 end,
  163.                 [dir_down] = function()
  164.                     lastura.afaze = 0
  165.                 end,
  166.                 [dir_left] = function()
  167.                     lastura.afaze = 6
  168.                 end,
  169.                 [dir_right] = function()
  170.                     lastura.afaze = 1
  171.                 end,
  172.             }
  173.             lastura:updateAnim()
  174.         end
  175.     end
  176.  
  177.     -- -------------------------------------------------------------
  178.     local function prog_init_snek1()
  179.         return function()
  180.             switch(snek1.afaze){
  181.                 [0] = function()
  182.                     if snek1.dir ~= dir_no then
  183.                         snek1.afaze = 1
  184.                     elseif random(50) == 1 then
  185.                         snek1.afaze = 2
  186.                     end
  187.                 end,
  188.                 [1] = function()
  189.                     if snek1.dir == dir_no and random(15) == 1 then
  190.                         snek1.afaze = 2
  191.                     end
  192.                 end,
  193.                 [2] = function()
  194.                     local choice = random(20)
  195.                     if choice == 1 then
  196.                         snek1.afaze = 1
  197.                     elseif 2 <= choice and choice <= 4 then
  198.                         snek1.afaze = 3
  199.                     end
  200.                 end,
  201.                 [3] = function()
  202.                     if random(5) == 1 then
  203.                         snek1.afaze = 0
  204.                     end
  205.                 end,
  206.             }
  207.             snek1:updateAnim()
  208.         end
  209.     end
  210.  
  211.     -- -------------------------------------------------------------
  212.     local function prog_init_snek2()
  213.         return function()
  214.             switch(snek2.afaze){
  215.                 [0] = function()
  216.                     if snek2.dir ~= dir_no then
  217.                         snek2.afaze = 1
  218.                     elseif random(50) == 1 then
  219.                         snek2.afaze = 2
  220.                     end
  221.                 end,
  222.                 [1] = function()
  223.                     if snek2.dir == dir_no and random(15) == 1 then
  224.                         snek2.afaze = 2
  225.                     end
  226.                 end,
  227.                 [2] = function()
  228.                     local choice = random(20)
  229.                     if choice == 1 then
  230.                         snek2.afaze = 1
  231.                     elseif 2 <= choice and choice <= 4 then
  232.                         snek2.afaze = 3
  233.                     end
  234.                 end,
  235.                 [3] = function()
  236.                     if random(5) == 1 then
  237.                         snek2.afaze = 0
  238.                     end
  239.                 end,
  240.             }
  241.         end
  242.     end
  243.  
  244.     -- --------------------
  245.     local update_table = {}
  246.     local subinit
  247.     subinit = prog_init_room()
  248.     if subinit then
  249.         table.insert(update_table, subinit)
  250.     end
  251.     subinit = prog_init_lastura()
  252.     if subinit then
  253.         table.insert(update_table, subinit)
  254.     end
  255.     subinit = prog_init_snek1()
  256.     if subinit then
  257.         table.insert(update_table, subinit)
  258.     end
  259.     subinit = prog_init_snek2()
  260.     if subinit then
  261.         table.insert(update_table, subinit)
  262.     end
  263.     return update_table
  264. end
  265. local update_table = prog_init()
  266.  
  267.  
  268. -- -----------------------------------------------------------------
  269. -- Update
  270. -- -----------------------------------------------------------------
  271. function prog_update()
  272.     for key, subupdate in pairs(update_table) do
  273.         subupdate()
  274.     end
  275. end
  276.  
  277.